package template;

/**
 * @Author: Ma JiBin
 * @Email: 1423553596@qq.com
 * @Date: 2018/9/14 09:25
 * @Description: 抽象模板类
 */
public abstract class Game {
    /**
     * 游戏初始化方法
     */
    abstract void initialize();

    /**
     * 开始游戏方法
     */
    abstract void startPlay();

    /**
     * 结束游戏方法
     */
    abstract void endPlay();

    /**
     * 模板方法，设定了上述方法的调用顺序
     * final类型，防止被重写覆盖
     */
    public final void play() {

        //初始化游戏
        initialize();

        //开始游戏
        startPlay();

        //结束游戏
        endPlay();
    }
}
